プライベートサブネットのWindows仮想マシンに特定のIPアドレスからのRDP接続を許可する
はじめに
SSMを使用すれば踏み台サーバーを経由せずにプライベートサブネットのWindows仮想マシンにリモートデスクトップ接続(RDP)を行うことができます。しかし、セキュリティ上の理由から、特定のIPアドレスからのRDP接続のみを許可することが望ましい場合があります。本記事では、プライベートサブネットのWindows仮想マシンに特定のIPアドレスからのRDP接続を許可する手順について説明します。
前提条件
- AWS CLIがインストールされていること
- Session Manager プラグインがインストールされていること
今回の検証では以下のバージョンを使用しました。
$ aws --version
aws-cli/2.19.1 Python/3.12.6 Darwin/23.6.0 exe/x86_64
$ session-manager-plugin --version
1.2.694.0
IAMポリシーの設定
このIAMポリシーは、特定のIPアドレス以外からの操作を全て拒否し、特定のEC2インスタンスに対してSSMの StartSession
を許可します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"xxx.xxx.xxx.xxx/32"
]
},
"Bool": {
"aws:ViaAWSService": "false"
}
}
},
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"arn:aws:ec2:ap-northeast-1:999999999999:instance/i-XXXXXXXXXXXXXXXXX",
"arn:aws:ssm:*:*:document/AWS-StartPortForwardingSession"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession",
"ssm:ResumeSession"
],
"Resource": [
"arn:aws:ssm:*:*:session/${aws:userid}-*"
]
}
]
}
このポリシーを特定のIAMユーザーにアタッチします。
ポートフォワーディングの設定
AWS CLIを使用してポートフォワーディングの設定を行います。以下のコマンドを実行します。
$ aws ssm start-session --target i-XXXXXXXXXXXXXXXXX --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389,localPortNumber=33389"
Starting session with SessionId: test-xxxxxxxxxxxxxxxxxxxxxxxxxx
Port 33389 opened for sessionId test-xxxxxxxxxxxxxxxxxxxxxxxxxx.
Waiting for connections...
EC2インスタンスのIDは適宜変更してください。
また、リモートデスクトップのデフォルトポート番号は3389ですが、ローカルのポート番号は任意の番号を指定できます。ここでは33389を指定しています。
エラーが発生した場合
なお、特定のIPアドレス以外でコマンドを実行した場合、以下のようなエラーメッセージが表示されます。
An error occurred (AccessDeniedException) when calling the StartSession operation: User: arn:aws:iam::999999999999:user/test is not authorized to perform: ssm:StartSession on resource: arn:aws:ec2:ap-northeast-1:999999999999:instance/i-XXXXXXXXXXXXXXXXX with an explicit deny in an identity-based policy
ローカルマシンのIPアドレスが想定した値であるか、IAMユーザにアタッチされている他のポリシーによって拒否されていないかを確認してください。
リモートデスクトップ接続
リモートデスクトップクライアントを起動し、以下の設定で接続します。ここではMacからの接続を例に説明します。
さいごに
さらにセキュリティを強化するためには、IAMユーザーに対してMFAを設定することをお勧めします。また、IAMポリシーの設定については、適切な権限を持つIAMユーザーにのみアタッチするようにしてください。
MFAの設定方法については、以下の記事も合わせてご参照ください。